From: Keir Fraser Date: Mon, 27 Oct 2008 11:27:31 +0000 (+0000) Subject: serial: Fix IRQ enable/disable in tx interrupt handler. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14054^2~32 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22?a=commitdiff_plain;h=1513da3149397ce795bb4964926f7811325d4810;p=xen.git serial: Fix IRQ enable/disable in tx interrupt handler. Signed-off-by: Keir Fraser --- diff --git a/xen/drivers/char/serial.c b/xen/drivers/char/serial.c index 9628b2c96b..28cd434a56 100644 --- a/xen/drivers/char/serial.c +++ b/xen/drivers/char/serial.c @@ -74,7 +74,7 @@ void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs) while ( !spin_trylock(&port->tx_lock) ) { if ( !port->driver->tx_empty(port) ) - return; + goto out; cpu_relax(); } @@ -89,7 +89,10 @@ void serial_tx_interrupt(struct serial_port *port, struct cpu_user_regs *regs) } } - spin_unlock_irqrestore(&port->tx_lock, flags); + spin_unlock(&port->tx_lock); + + out: + local_irq_restore(flags); } static void __serial_putc(struct serial_port *port, char c)